package com.zjsd.sqeybusiness.service.impl;

import java.io.IOException;
import java.io.StringReader;
import java.util.*;

import com.ruoyi.common.utils.StringUtils;
import com.zjsd.sqeybusiness.domain.*;
import com.zjsd.sqeybusiness.mapper.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zjsd.sqeybusiness.service.IDzsjinfoService;
import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;

/**
 * 定制商机Service业务层处理
 * 
 * @author Zheng
 * @date 2025-03-06
 */
@Service
public class DzsjinfoServiceImpl implements IDzsjinfoService 
{
    @Autowired
    private DzsjinfoMapper dzsjinfoMapper;
    @Autowired
    private DzsjdetailMapper dzsjdetailMapper ;
    @Autowired
    private DzsjprovincedetailMapper dzsjprovincedetailMapper ;
    @Autowired
    private HyinfoMapper hyinfoMapper;
    @Autowired
    private SysAreaMapper sysAreaMapper ;
    /**
     * 查询定制商机
     * 
     * @param dzsjid 定制商机ID
     * @return 定制商机
     */
    @Override
    public Dzsjinfo selectDzsjinfoById(Long dzsjid)
    {
        return dzsjinfoMapper.selectDzsjinfoById(dzsjid);
    }

    /**
     * 查询定制商机列表
     * 
     * @param dzsjinfo 定制商机
     * @return 定制商机
     */
    @Override
    public List<Dzsjinfo> selectDzsjinfoList(Dzsjinfo dzsjinfo)
    {
        if(dzsjinfo.getEndDate() != null){
            Date endDate = dzsjinfo.getEndDate() ;
            Calendar calendar = new GregorianCalendar();
            calendar.setTime(endDate);
            calendar.set(Calendar.HOUR_OF_DAY, 23);
            calendar.set(Calendar.MINUTE, 59);
            calendar.set(Calendar.SECOND, 59);
            dzsjinfo.setEndDate(calendar.getTime());
        }
        List<Dzsjinfo> list = dzsjinfoMapper.selectDzsjinfoList(dzsjinfo);
        if(list != null && list.size() > 0){
            for(Dzsjinfo dzsjinfo1 : list){
                Hyinfo hyinfo = hyinfoMapper.selectHyinfoById(dzsjinfo1.getHyid());
                if(hyinfo != null){
                   dzsjinfo1.setHyname(hyinfo.getName());
                   dzsjinfo1.setHyphone(hyinfo.getPhone());
                   dzsjinfo1.setWxname(hyinfo.getWxname());
                }
                Dzsjprovincedetail dzsjprovincedetail = new Dzsjprovincedetail();
                dzsjprovincedetail.setDzsjid(dzsjinfo1.getDzsjid());
                List<Dzsjprovincedetail> list2 = dzsjprovincedetailMapper.selectDzsjprovincedetailList(dzsjprovincedetail);
                if(list2 != null && list2.size() > 0){
                    String  provincenames ="";
                    for(int i1 = 0 ; i1 < list2.size() ; i1++){
                        SysArea sysArea = sysAreaMapper.selectSysAreaByCode(list2.get(i1).getProvincecode());
                        if(sysArea != null){
                            if(StringUtils.isNotBlank(provincenames)){
                                provincenames = provincenames + "," + sysArea.getName() ;
                            }else {
                                provincenames = sysArea.getName() ;
                            }
                        }
                    }
                    dzsjinfo1.setProvincenames(provincenames);
                }
            }
        }
        return list ;
    }

    /**
     * 新增定制商机
     * 
     * @param dzsjinfo 定制商机
     * @return 结果
     */
    @Override
    public int insertDzsjinfo(Dzsjinfo dzsjinfo)
    {
        int i = 0 ;
        Dzsjinfo dzsjinfo1 = new Dzsjinfo();
        dzsjinfo1.setHyid(dzsjinfo.getHyid());
        List<Dzsjinfo> list = dzsjinfoMapper.selectDzsjinfoList(dzsjinfo1);
        if(list != null && list.size() > 0){
            dzsjinfo.setDzsjid(list.get(0).getDzsjid());
        }
        if(dzsjinfo.getDzsjid() != null){
            i = dzsjinfoMapper.updateDzsjinfo(dzsjinfo);
            Dzsjdetail dzsjdetail = new Dzsjdetail();
            dzsjdetail.setDzsjid(dzsjinfo.getDzsjid());
            List<Dzsjdetail> list1 = dzsjdetailMapper.selectDzsjdetailList(dzsjdetail);
            if(list1 != null && list1.size() > 0){
                for(Dzsjdetail dzsjdetail1 : list1){
                    dzsjdetailMapper.deleteDzsjdetailById(dzsjdetail1.getDetailid());
                }
            }
            Dzsjprovincedetail dzsjprovincedetail = new Dzsjprovincedetail();
            dzsjprovincedetail.setDzsjid(dzsjinfo.getDzsjid());
            List<Dzsjprovincedetail> list2 = dzsjprovincedetailMapper.selectDzsjprovincedetailList(dzsjprovincedetail);
            if(list2 != null && list2.size() > 0){
                for(Dzsjprovincedetail dzsjprovincedetail1 : list2){
                    dzsjprovincedetailMapper.deleteDzsjprovincedetailById(dzsjprovincedetail1.getDzsjprodetailid());
                }
            }
            if(StringUtils.isNotBlank(dzsjinfo.getContent())){
                String[] split = dzsjinfo.getContent().split("\n");
                if(split.length > 0){
                    for (String str : split) {

                        List<String> words = new ArrayList<>();
                        try (StringReader reader = new StringReader(str)) {
                            IKSegmenter ik = new IKSegmenter(reader, true);  // true 开启智能分词
                            Lexeme lexeme;
                            while ((lexeme = ik.next()) != null) {
                                Dzsjdetail dzsjdetail1 = new Dzsjdetail();
                                dzsjdetail1.setDzsjid(dzsjinfo.getDzsjid());
                                dzsjdetail1.setKeword(lexeme.getLexemeText());
                                dzsjdetailMapper.insertDzsjdetail(dzsjdetail1);
                            }
                        } catch (IOException e) {
                            throw new RuntimeException(e);
                        }
                    }
                }
            }
            if(StringUtils.isNotBlank(dzsjinfo.getProvincecodes())){
                String[] split = dzsjinfo.getProvincecodes().split(",");
                if(split.length > 0){
                    for(String s : split){
                        Dzsjprovincedetail dzsjprovincedetail1 = new Dzsjprovincedetail();
                        dzsjprovincedetail1.setProvincecode(s);
                        dzsjprovincedetail1.setDzsjid(dzsjinfo.getDzsjid());
                        dzsjprovincedetailMapper.insertDzsjprovincedetail(dzsjprovincedetail1);
                    }
                }
            }
        }else{
            dzsjinfo.setCzsj(new Date());
            i = dzsjinfoMapper.insertDzsjinfo(dzsjinfo);
            if(StringUtils.isNotBlank(dzsjinfo.getContent())){
                String[] split = dzsjinfo.getContent().split("\n");
                if(split.length > 0){
                    for (String s : split) {
                        Dzsjdetail dzsjdetail = new Dzsjdetail();
                        dzsjdetail.setDzsjid(dzsjinfo.getDzsjid());
                        dzsjdetail.setKeword(s);
                        dzsjdetailMapper.insertDzsjdetail(dzsjdetail);
                    }
                }
            }

            if(StringUtils.isNotBlank(dzsjinfo.getProvincecodes())){
                String[] split = dzsjinfo.getProvincecodes().split(",");
                if(split.length > 0){
                    for(String s : split){
                        Dzsjprovincedetail dzsjprovincedetail = new Dzsjprovincedetail();
                        dzsjprovincedetail.setProvincecode(s);
                        dzsjprovincedetail.setDzsjid(dzsjinfo.getDzsjid());
                        dzsjprovincedetailMapper.insertDzsjprovincedetail(dzsjprovincedetail);
                    }
                }
            }
        }
        return i ;
    }

    /**
     * 修改定制商机
     * 
     * @param dzsjinfo 定制商机
     * @return 结果
     */
    @Override
    public int updateDzsjinfo(Dzsjinfo dzsjinfo)
    {
        return dzsjinfoMapper.updateDzsjinfo(dzsjinfo);
    }

    /**
     * 批量删除定制商机
     * 
     * @param dzsjids 需要删除的定制商机ID
     * @return 结果
     */
    @Override
    public int deleteDzsjinfoByIds(Long[] dzsjids)
    {
        return dzsjinfoMapper.deleteDzsjinfoByIds(dzsjids);
    }

    /**
     * 删除定制商机信息
     * 
     * @param dzsjid 定制商机ID
     * @return 结果
     */
    @Override
    public int deleteDzsjinfoById(Long dzsjid)
    {
        return dzsjinfoMapper.deleteDzsjinfoById(dzsjid);
    }

    @Override
    public Dzsjinfo selectDzsjinfoByHyid(Long hyid) {
        Dzsjinfo dzsjinfo = dzsjinfoMapper.selectDzsjinfoByHyid(hyid);
        if(dzsjinfo != null){
            Dzsjdetail dzsjdetail = new Dzsjdetail();
            dzsjdetail.setDzsjid(dzsjinfo.getDzsjid());
            List<Dzsjdetail> list = dzsjdetailMapper.selectDzsjdetailList(dzsjdetail);
            if(list != null && list.size() > 0){
                StringBuilder stringBuilder = new StringBuilder();
                for(Dzsjdetail dzsjdetail1 : list){
                    stringBuilder.append(dzsjdetail1.getKeword());
                    stringBuilder.append("\n");
                }
                dzsjinfo.setContent(stringBuilder.toString());
            }
            Dzsjprovincedetail dzsjprovincedetail = new Dzsjprovincedetail();
            dzsjprovincedetail.setDzsjid(dzsjinfo.getDzsjid());
            List<Dzsjprovincedetail> list1 = dzsjprovincedetailMapper.selectDzsjprovincedetailList(dzsjprovincedetail);
            if(list1 != null && list1.size() > 0){
                StringBuilder stringBuilder = new StringBuilder();
                for(Dzsjprovincedetail dzsjprovincedetail1 : list1){
                    stringBuilder.append(dzsjprovincedetail1.getProvincecode());
                    stringBuilder.append(",");
                }
                dzsjinfo.setProvincecodes(stringBuilder.toString());
            }
        }
        return dzsjinfo;
    }
}
